package be.groept.ace.cursusplanning.model.containers;

import java.util.List;

/**
 * 
 * @author Abdelkarim Boujida
 *
 * @param <T>
 * @param <S>
 */
public interface Container<T extends Comparable<T>,S> extends Iterable<T>{
	/**
	 * voegt een object van T toe
	 * @param T
	 */
	public void add(T object) throws IllegalArgumentException;
	
	/**
	 * geeft de object T terug met S als key
	 * @param key
	 * @return gevonden T
	 */
	public T get(S key) throws IllegalArgumentException;
	
	/**
	 * Geeft alle T's terug
	 * @return T's
	 */
	public List<T> getAll();
	
	/**
	 * verwijdert object T met S als key
	 * @param key
	 */
	public void remove(S key) throws IllegalArgumentException;
}
